package com.gexin.controller.demo;

import com.gexin.common.cache.CacheUtils;
import com.gexin.common.cache.geo.GeoLocation;
import com.gexin.common.cache.geo.GeoRadiusResponseResult;
import com.gexin.common.cache.geo.RedisGeoKit;
import com.gexin.common.utils.DateUtil;
import com.gexin.model.weixin.WeixinAppConfig;
import com.jfinal.core.Controller;
import com.jfinal.ext.route.ControllerBind;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.redis.Cache;
import com.jfinal.plugin.redis.Redis;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;

import redis.clients.jedis.GeoUnit;
import redis.clients.jedis.params.geo.GeoRadiusParam;

@ControllerBind(controllerKey = "/demo/redis")
public class RedisController<main> extends Controller {
	private String cache_key = "geo:key3131133";

	public void geo_add() {
		GeoLocation lo = new GeoLocation();
		lo.setLat(31.085282);
		lo.setLon(121.205292);
		lo.setName("上海市松江区沈砖公路-佘山");
		RedisGeoKit.geoadd(cache_key, lo.getLon(), lo.getLat(), lo);
		
		GeoLocation lo1=new GeoLocation();
		lo1.setLat(31.149760);
		lo1.setLon(121.335690);
		lo1.setName("上海市闵行区新龙路1333弄66号-万科国际");
		RedisGeoKit.geoadd(cache_key, lo1.getLon(), lo1.getLat(), lo1);
		
		lo=new GeoLocation();
		lo.setLat(31.194889);
		lo.setLon(121.318588);
		lo.setName("上海市闵行区申贵路1500号-虹桥火车站");
		RedisGeoKit.geoadd(cache_key, lo.getLon(), lo.getLat(), lo);
		
		lo=new GeoLocation();
		lo.setLat(31.063522);
		lo.setLon(121.240997);
		lo.setName("上海市松江区银泽路828号-特奥竞赛训练中心");
		RedisGeoKit.geoadd(cache_key, lo.getLon(), lo.getLat(), lo);
		
		
		lo=new GeoLocation();
		lo.setLat(31.405224);
		lo.setLon(121.470337);
		lo.setName("上海市宝山区盘古路");
		RedisGeoKit.geoadd(cache_key, lo.getLon(), lo.getLat(), lo);
		
		renderText("success");
	}

	public void gerQuery() {
		// 31.144362,121.342621
		List<GeoRadiusResponseResult> list = RedisGeoKit.georadius(cache_key, 121.342621, 31.144362, 112.2, GeoUnit.KM, GeoRadiusParam.geoRadiusParam().sortAscending().withDist());
		renderJson(list);
	}

	public void inc() {
		String name = getPara("test");
		String name1 = "Test11" + "1111";
		Integer random_num = new Random().nextInt(100);
		renderText(name1 + " ====	random : == " + random_num);
		// renderText(name==null?"1":name);
		// long l = Redis.use().incrBy("t1", 1);
		// renderText(l+"");
	}

	public void test() {
		WeixinAppConfig c = WeixinAppConfig.dao.findById(1);
		System.err.println(c.getKeystoreFileName());
		// WxConfigKit.getApiConfig()
		renderJson(c);
	}

	public void index() {
		System.err.println(Db.update("DELETE from tbl_realinfo where id =1287"));
		Cache redis = Redis.use();
		for (int i = 0; i <= 10; i++) {
			redis.lpush("aaa", "msg" + i);// 发布一个消息
		}
		renderText("ok");
	}

	public void clears() {
		renderText("ok");
	}

	public void pop() {
		// Cache redis = Redis.use();
		// System.err.println(Redis.use().randomKey());
		System.err.println(Redis.use().llen("aaa"));
		renderJson(Redis.use().rpop("aaa").toString());
	}

	public void in() {
		for (int i = 0; i < 5000; i++) {
			// CacheUtils.use().lp
			CacheUtils.use().lpush("t:lists", DateUtil.getTimestamp());
		}
		renderNull();
	}



}
